[INFO] cloning repository https://github.com/MaXiaoye/CAS706_assignment3_Rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/MaXiaoye/CAS706_assignment3_Rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaXiaoye%2FCAS706_assignment3_Rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaXiaoye%2FCAS706_assignment3_Rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c026c323ec5117cf87b72eb514b027e0e1f39a8f
[INFO] fixing MaXiaoye/CAS706_assignment3_Rust against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaXiaoye%2FCAS706_assignment3_Rust" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust
[INFO] finished tweaking git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust
[INFO] tweaked toml for git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: An explicit [[bin]] section is specified in Cargo.toml which currently
[INFO] [stderr] disables Cargo from automatically inferring other binary targets.
[INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following
[INFO] [stderr] files will be included as a binary target:
[INFO] [stderr] 
[INFO] [stderr] * src/main.rs
[INFO] [stderr] 
[INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be
[INFO] [stderr] ready to be compiled as a binary target today. You can future-proof yourself
[INFO] [stderr] and disable this warning by adding `autobins = false` to your [package]
[INFO] [stderr] section. You may also move the files to a location where Cargo would not
[INFO] [stderr] automatically infer them to be a target, such as in subfolders.
[INFO] [stderr] 
[INFO] [stderr] For more information on this warning you can consult
[INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330
[INFO] [stderr] warning: Cargo.toml: path `src/main.rs` was erroneously implicitly accepted for binary `hello_world`,
[INFO] [stderr] please set bin.path in Cargo.toml
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `assignmentThree_Rust` (manifest) generated 3 warnings
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a
[INFO] running `Command { std: "docker" "start" "689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: An explicit [[bin]] section is specified in Cargo.toml which currently
[INFO] [stderr] disables Cargo from automatically inferring other binary targets.
[INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following
[INFO] [stderr] files will be included as a binary target:
[INFO] [stderr] 
[INFO] [stderr] * src/main.rs
[INFO] [stderr] 
[INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be
[INFO] [stderr] ready to be compiled as a binary target today. You can future-proof yourself
[INFO] [stderr] and disable this warning by adding `autobins = false` to your [package]
[INFO] [stderr] section. You may also move the files to a location where Cargo would not
[INFO] [stderr] automatically infer them to be a target, such as in subfolders.
[INFO] [stderr] 
[INFO] [stderr] For more information on this warning you can consult
[INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330
[INFO] [stderr] warning: Cargo.toml: path `src/main.rs` was erroneously implicitly accepted for binary `hello_world`,
[INFO] [stderr] please set bin.path in Cargo.toml
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `assignmentThree_Rust` (manifest) generated 3 warnings
[INFO] [stderr]     Checking assignmentThree_Rust v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variant `T_INT` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:46:3
[INFO] [stdout]    |
[INFO] [stdout] 46 |         T_INT{ty: Type, value: u32},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TInt`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_BOOL` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:47:6
[INFO] [stdout]    |
[INFO] [stdout] 47 |         T_BOOL{ty: Type, value: bool},
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to upper camel case: `TBool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_VAR` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:48:6
[INFO] [stdout]    |
[INFO] [stdout] 48 |         T_VAR{ty: Type, name: char},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TVar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_FUN` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:49:6
[INFO] [stdout]    |
[INFO] [stdout] 49 |         T_FUN{ty: Type, param: Box<TypedTerm>, body: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TFun`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_Closure` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:50:6
[INFO] [stdout]    |
[INFO] [stdout] 50 |         T_Closure{fun: Box<TypedTerm>, env: InterpEnv},
[INFO] [stdout]    |         ^^^^^^^^^ help: convert the identifier to upper camel case: `TClosure`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_APP` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:51:6
[INFO] [stdout]    |
[INFO] [stdout] 51 |         T_APP{ty: Type, fun: Box<TypedTerm>, arg: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TApp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_CALC` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:52:6
[INFO] [stdout]    |
[INFO] [stdout] 52 |         T_CALC{ty: Type, op: char, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to upper camel case: `TCalc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_NOT` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:53:6
[INFO] [stdout]    |
[INFO] [stdout] 53 |         T_NOT{ty: Type, exp: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TNot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_AND` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:54:6
[INFO] [stdout]    |
[INFO] [stdout] 54 |         T_AND{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TAnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_OR` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:55:6
[INFO] [stdout]    |
[INFO] [stdout] 55 |         T_OR{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^ help: convert the identifier to upper camel case: `TOr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_EQU` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 |         T_EQU{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TEqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_LT` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:57:6
[INFO] [stdout]    |
[INFO] [stdout] 57 |         T_LT{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^ help: convert the identifier to upper camel case: `TLt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_IF` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:58:6
[INFO] [stdout]    |
[INFO] [stdout] 58 |         T_IF{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>, exp3: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^ help: convert the identifier to upper camel case: `TIf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_LET` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:59:6
[INFO] [stdout]    |
[INFO] [stdout] 59 |         T_LET{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>, exp3: Box<TypedTerm>}
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TLet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_INT` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:46:3
[INFO] [stdout]    |
[INFO] [stdout] 46 |         T_INT{ty: Type, value: u32},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TInt`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_BOOL` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:47:6
[INFO] [stdout]    |
[INFO] [stdout] 47 |         T_BOOL{ty: Type, value: bool},
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to upper camel case: `TBool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_VAR` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:48:6
[INFO] [stdout]    |
[INFO] [stdout] 48 |         T_VAR{ty: Type, name: char},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TVar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_FUN` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:49:6
[INFO] [stdout]    |
[INFO] [stdout] 49 |         T_FUN{ty: Type, param: Box<TypedTerm>, body: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TFun`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_Closure` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:50:6
[INFO] [stdout]    |
[INFO] [stdout] 50 |         T_Closure{fun: Box<TypedTerm>, env: InterpEnv},
[INFO] [stdout]    |         ^^^^^^^^^ help: convert the identifier to upper camel case: `TClosure`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_APP` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:51:6
[INFO] [stdout]    |
[INFO] [stdout] 51 |         T_APP{ty: Type, fun: Box<TypedTerm>, arg: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TApp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_CALC` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:52:6
[INFO] [stdout]    |
[INFO] [stdout] 52 |         T_CALC{ty: Type, op: char, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to upper camel case: `TCalc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_NOT` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:53:6
[INFO] [stdout]    |
[INFO] [stdout] 53 |         T_NOT{ty: Type, exp: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TNot`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_AND` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:54:6
[INFO] [stdout]    |
[INFO] [stdout] 54 |         T_AND{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TAnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_OR` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:55:6
[INFO] [stdout]    |
[INFO] [stdout] 55 |         T_OR{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^ help: convert the identifier to upper camel case: `TOr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_EQU` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 |         T_EQU{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TEqu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_LT` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:57:6
[INFO] [stdout]    |
[INFO] [stdout] 57 |         T_LT{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^ help: convert the identifier to upper camel case: `TLt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_IF` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:58:6
[INFO] [stdout]    |
[INFO] [stdout] 58 |         T_IF{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>, exp3: Box<TypedTerm>},
[INFO] [stdout]    |         ^^^^ help: convert the identifier to upper camel case: `TIf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `T_LET` should have an upper camel case name
[INFO] [stdout]   --> src/main.rs:59:6
[INFO] [stdout]    |
[INFO] [stdout] 59 |         T_LET{ty: Type, exp1: Box<TypedTerm>, exp2: Box<TypedTerm>, exp3: Box<TypedTerm>}
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to upper camel case: `TLet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:613:6
[INFO] [stdout]     |
[INFO] [stdout] 613 |     let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a1`
[INFO] [stdout]    --> src/main.rs:600:6
[INFO] [stdout]     |
[INFO] [stdout] 600 |     let a1 = UntypedTerm::APP{fun: Box::new(f1.clone()), arg: Box::new(i1.clone())};
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_a1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/main.rs:67:36
[INFO] [stdout]    |
[INFO] [stdout] 67 |                 TypedTerm::T_INT{ty: t, value: v} => t,
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/main.rs:68:40
[INFO] [stdout]    |
[INFO] [stdout] 68 |                 TypedTerm::T_BOOL{ty: t, value: v} => t,
[INFO] [stdout]    |                                                 ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/main.rs:69:38
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 TypedTerm::T_VAR{ty: t, name: n} => t,
[INFO] [stdout]    |                                               ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/main.rs:70:39
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 TypedTerm::T_FUN{ty: t, param: p, body: b} => t,
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> src/main.rs:70:48
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 TypedTerm::T_FUN{ty: t, param: p, body: b} => t,
[INFO] [stdout]    |                                                         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/main.rs:71:37
[INFO] [stdout]    |
[INFO] [stdout] 71 |                 TypedTerm::T_APP{ty: t, fun: f, arg: a} => t,
[INFO] [stdout]    |                                              ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/main.rs:71:45
[INFO] [stdout]    |
[INFO] [stdout] 71 |                 TypedTerm::T_APP{ty: t, fun: f, arg: a} => t,
[INFO] [stdout]    |                                                      ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]   --> src/main.rs:72:37
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                              ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:72:46
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                       ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:72:56
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                                 ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/main.rs:73:37
[INFO] [stdout]    |
[INFO] [stdout] 73 |                 TypedTerm::T_NOT{ty: t, exp: e} => t,
[INFO] [stdout]    |                                              ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:74:38
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                               ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:74:48
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                         ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:75:37
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:75:47
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                        ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:76:38
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                               ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:76:48
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                         ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:77:37
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:77:47
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                        ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:78:37
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:78:47
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                        ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e3`
[INFO] [stdout]   --> src/main.rs:78:57
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                                  ^^ help: if this is intentional, prefix it with an underscore: `_e3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:79:38
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                               ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:79:48
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                         ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e3`
[INFO] [stdout]   --> src/main.rs:79:58
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                                   ^^ help: if this is intentional, prefix it with an underscore: `_e3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 |             _ => panic!("undefined term!")
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 110 |             UntypedTerm::INT{value: val} => TypedTerm::T_INT{ty: freshVar(varNum), value: val},
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] 111 |             UntypedTerm::BOOL{value: b} => TypedTerm::T_BOOL{ty: freshVar(varNum), value: b},
[INFO] [stdout]     |             --------------------------- matches some of the same values
[INFO] [stdout] 112 |             UntypedTerm::FUN{param: p, body: b} => {
[INFO] [stdout]     |             ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 119 |             UntypedTerm::VAR{name: n} => {
[INFO] [stdout]     |             ------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 141 |             _ => panic!("undefined term!")
[INFO] [stdout]     |             ^ ...and 9 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:613:6
[INFO] [stdout]     |
[INFO] [stdout] 613 |     let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a1`
[INFO] [stdout]    --> src/main.rs:600:6
[INFO] [stdout]     |
[INFO] [stdout] 600 |     let a1 = UntypedTerm::APP{fun: Box::new(f1.clone()), arg: Box::new(i1.clone())};
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_a1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/main.rs:156:35
[INFO] [stdout]     |
[INFO] [stdout] 156 |             TypedTerm::T_INT{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyInt}],
[INFO] [stdout]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/main.rs:157:36
[INFO] [stdout]     |
[INFO] [stdout] 157 |             TypedTerm::T_BOOL{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyBool}],
[INFO] [stdout]     |                                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:165:25
[INFO] [stdout]     |
[INFO] [stdout] 165 |             TypedTerm::T_VAR{ty: t, name: n} => vec![],
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> src/main.rs:165:34
[INFO] [stdout]     |
[INFO] [stdout] 165 |             TypedTerm::T_VAR{ty: t, name: n} => vec![],
[INFO] [stdout]     |                                           ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/main.rs:175:33
[INFO] [stdout]     |
[INFO] [stdout] 175 |             TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                          ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/main.rs:67:36
[INFO] [stdout]    |
[INFO] [stdout] 67 |                 TypedTerm::T_INT{ty: t, value: v} => t,
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:334:8
[INFO] [stdout]     |
[INFO] [stdout] 334 |             let mut updateConstraints = solutionOne.applyToSet(&mut vec1);
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/main.rs:68:40
[INFO] [stdout]    |
[INFO] [stdout] 68 |                 TypedTerm::T_BOOL{ty: t, value: v} => t,
[INFO] [stdout]    |                                                 ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/main.rs:69:38
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 TypedTerm::T_VAR{ty: t, name: n} => t,
[INFO] [stdout]    |                                               ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/main.rs:70:39
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 TypedTerm::T_FUN{ty: t, param: p, body: b} => t,
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> src/main.rs:70:48
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 TypedTerm::T_FUN{ty: t, param: p, body: b} => t,
[INFO] [stdout]    |                                                         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/main.rs:71:37
[INFO] [stdout]    |
[INFO] [stdout] 71 |                 TypedTerm::T_APP{ty: t, fun: f, arg: a} => t,
[INFO] [stdout]    |                                              ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/main.rs:71:45
[INFO] [stdout]    |
[INFO] [stdout] 71 |                 TypedTerm::T_APP{ty: t, fun: f, arg: a} => t,
[INFO] [stdout]    |                                                      ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]   --> src/main.rs:72:37
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                              ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:398:7
[INFO] [stdout]     |
[INFO] [stdout] 398 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:72:46
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                       ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:72:56
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                                 ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/main.rs:73:37
[INFO] [stdout]    |
[INFO] [stdout] 73 |                 TypedTerm::T_NOT{ty: t, exp: e} => t,
[INFO] [stdout]    |                                              ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:74:38
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                               ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:74:48
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                         ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:75:37
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:75:47
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                        ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:76:38
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                               ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:76:48
[INFO] [stdout]    |
[INFO] [stdout] 76 |                 TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                         ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:77:37
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:77:47
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t,
[INFO] [stdout]    |                                                        ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:78:37
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                              ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:78:47
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                        ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e3`
[INFO] [stdout]   --> src/main.rs:78:57
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                                  ^^ help: if this is intentional, prefix it with an underscore: `_e3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e1`
[INFO] [stdout]   --> src/main.rs:79:38
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                               ^^ help: if this is intentional, prefix it with an underscore: `_e1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e2`
[INFO] [stdout]   --> src/main.rs:79:48
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                         ^^ help: if this is intentional, prefix it with an underscore: `_e2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e3`
[INFO] [stdout]   --> src/main.rs:79:58
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t,
[INFO] [stdout]    |                                                                   ^^ help: if this is intentional, prefix it with an underscore: `_e3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:437:31
[INFO] [stdout]     |
[INFO] [stdout] 437 |             TypedTerm::T_VAR{ty: t, name: n} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:441:31
[INFO] [stdout]     |
[INFO] [stdout] 441 |             TypedTerm::T_APP{ty: t, fun: f, arg: a} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:447:34
[INFO] [stdout]     |
[INFO] [stdout] 447 |                         TypedTerm::T_FUN{ty: t1, param: p1, body: b1} => match *p1.clone() {
[INFO] [stdout]     |                                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:448:35
[INFO] [stdout]     |
[INFO] [stdout] 448 | ...                   TypedTerm::T_VAR{ty: t2, name: n1} => {
[INFO] [stdout]     |                                            ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:459:32
[INFO] [stdout]     |
[INFO] [stdout] 459 |             TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:470:31
[INFO] [stdout]     |
[INFO] [stdout] 470 |             TypedTerm::T_NOT{ty: t, exp: e} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:477:31
[INFO] [stdout]     |
[INFO] [stdout] 477 |             TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:482:30
[INFO] [stdout]     |
[INFO] [stdout] 482 |             TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                 ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:487:31
[INFO] [stdout]     |
[INFO] [stdout] 487 |             TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:492:30
[INFO] [stdout]     |
[INFO] [stdout] 492 |             TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                 ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:497:30
[INFO] [stdout]     |
[INFO] [stdout] 497 |             TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => {
[INFO] [stdout]     |                                 ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:502:34
[INFO] [stdout]     |
[INFO] [stdout] 502 |                     TypedTerm::T_BOOL{ty: t1, value: v} => if v {v2} else {v3},
[INFO] [stdout]     |                                           ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:506:31
[INFO] [stdout]     |
[INFO] [stdout] 506 |             TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:511:33
[INFO] [stdout]     |
[INFO] [stdout] 511 |                     TypedTerm::T_VAR{ty: t, name: n} => {
[INFO] [stdout]     |                                          ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:523:7
[INFO] [stdout]     |
[INFO] [stdout] 523 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `solutions`
[INFO] [stdout]    --> src/main.rs:526:10
[INFO] [stdout]     |
[INFO] [stdout] 526 |         let solutions = unify(Constraints);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solutions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:536:26
[INFO] [stdout]     |
[INFO] [stdout] 536 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:536:63
[INFO] [stdout]     |
[INFO] [stdout] 536 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:543:26
[INFO] [stdout]     |
[INFO] [stdout] 543 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:543:63
[INFO] [stdout]     |
[INFO] [stdout] 543 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:550:26
[INFO] [stdout]     |
[INFO] [stdout] 550 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:550:63
[INFO] [stdout]     |
[INFO] [stdout] 550 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:557:26
[INFO] [stdout]     |
[INFO] [stdout] 557 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:557:63
[INFO] [stdout]     |
[INFO] [stdout] 557 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:564:26
[INFO] [stdout]     |
[INFO] [stdout] 564 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, value: v1 < ...
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:564:63
[INFO] [stdout]     |
[INFO] [stdout] 564 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, value: v1 < v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:572:27
[INFO] [stdout]     |
[INFO] [stdout] 572 | ...   (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1...
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:572:65
[INFO] [stdout]     |
[INFO] [stdout] 572 | ...e: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 && v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:579:27
[INFO] [stdout]     |
[INFO] [stdout] 579 | ...   (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1...
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:579:65
[INFO] [stdout]     |
[INFO] [stdout] 579 | ...e: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 || v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:586:27
[INFO] [stdout]     |
[INFO] [stdout] 586 | ...   (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1...
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:586:65
[INFO] [stdout]     |
[INFO] [stdout] 586 | ...e: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 == v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:587:26
[INFO] [stdout]     |
[INFO] [stdout] 587 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 =...
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:587:63
[INFO] [stdout]     |
[INFO] [stdout] 587 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 == v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 |             _ => panic!("undefined term!")
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 110 |             UntypedTerm::INT{value: val} => TypedTerm::T_INT{ty: freshVar(varNum), value: val},
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] 111 |             UntypedTerm::BOOL{value: b} => TypedTerm::T_BOOL{ty: freshVar(varNum), value: b},
[INFO] [stdout]     |             --------------------------- matches some of the same values
[INFO] [stdout] 112 |             UntypedTerm::FUN{param: p, body: b} => {
[INFO] [stdout]     |             ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 119 |             UntypedTerm::VAR{name: n} => {
[INFO] [stdout]     |             ------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 141 |             _ => panic!("undefined term!")
[INFO] [stdout]     |             ^ ...and 9 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NOT`, `AND`, `OR`, `LT`, and `IF` are never constructed
[INFO] [stdout]   --> src/main.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout]  9 |     enum UntypedTerm {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |         NOT{exp: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 17 |         AND{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 18 |         OR{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^
[INFO] [stdout] 19 |         EQU{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout] 20 |         LT{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^
[INFO] [stdout] 21 |         IF{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>, exp3: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UntypedTerm` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `empty` and `fromPair` are never used
[INFO] [stdout]    --> src/main.rs:272:6
[INFO] [stdout]     |
[INFO] [stdout] 269 |     impl Substitution {
[INFO] [stdout]     |     ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 272 |         fn empty() -> Substitution {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |         fn fromPair(tvar: u32, ty: Type) -> Substitution {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `ParamTy` should have a snake case name
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         TyFun{ParamTy: Box<Type>, ReturnTy: Box<Type>}
[INFO] [stdout]    |               ^^^^^^^ help: convert the identifier to snake case: `param_ty`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `ReturnTy` should have a snake case name
[INFO] [stdout]   --> src/main.rs:33:29
[INFO] [stdout]    |
[INFO] [stdout] 33 |         TyFun{ParamTy: Box<Type>, ReturnTy: Box<Type>}
[INFO] [stdout]    |                                   ^^^^^^^^ help: convert the identifier to snake case: `return_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `freshVar` should have a snake case name
[INFO] [stdout]   --> src/main.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     fn freshVar(v: &mut u32) -> Type {
[INFO] [stdout]    |        ^^^^^^^^ help: convert the identifier to snake case: `fresh_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `getType` should have a snake case name
[INFO] [stdout]   --> src/main.rs:65:6
[INFO] [stdout]    |
[INFO] [stdout] 65 |         fn getType(self) -> Type {
[INFO] [stdout]    |            ^^^^^^^ help: convert the identifier to snake case: `get_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Env` should have a snake case name
[INFO] [stdout]   --> src/main.rs:88:3
[INFO] [stdout]    |
[INFO] [stdout] 88 |         Env: HashMap<char,Type>
[INFO] [stdout]    |         ^^^ help: convert the identifier to snake case: `env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `varNum` should have a snake case name
[INFO] [stdout]    --> src/main.rs:107:52
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn annotate(term: UntypedTerm, mut tenv: TypeEnv, varNum: &mut u32) -> TypedTerm {
[INFO] [stdout]     |                                                       ^^^^^^ help: convert the identifier to snake case: `var_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy` should have a snake case name
[INFO] [stdout]    --> src/main.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 let paramTy = freshVar(varNum);
[INFO] [stdout]     |                     ^^^^^^^ help: convert the identifier to snake case: `param_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy1` should have a snake case name
[INFO] [stdout]    --> src/main.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 let paramTy1 = paramTy.clone();
[INFO] [stdout]     |                     ^^^^^^^^ help: convert the identifier to snake case: `param_ty1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramBinder` should have a snake case name
[INFO] [stdout]    --> src/main.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |                 let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: p};                
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy` should have a snake case name
[INFO] [stdout]    --> src/main.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 |                 let paramTy = freshVar(varNum);
[INFO] [stdout]     |                     ^^^^^^^ help: convert the identifier to snake case: `param_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy1` should have a snake case name
[INFO] [stdout]    --> src/main.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let paramTy1 = paramTy.clone();
[INFO] [stdout]     |                     ^^^^^^^^ help: convert the identifier to snake case: `param_ty1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramBinder` should have a snake case name
[INFO] [stdout]    --> src/main.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |                 let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: e1};
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `typeA` should have a snake case name
[INFO] [stdout]    --> src/main.rs:149:3
[INFO] [stdout]     |
[INFO] [stdout] 149 |         typeA: Type,
[INFO] [stdout]     |         ^^^^^ help: convert the identifier to snake case: `type_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `typeB` should have a snake case name
[INFO] [stdout]    --> src/main.rs:150:3
[INFO] [stdout]     |
[INFO] [stdout] 150 |         typeB: Type
[INFO] [stdout]     |         ^^^^^ help: convert the identifier to snake case: `type_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fromPair` should have a snake case name
[INFO] [stdout]    --> src/main.rs:277:6
[INFO] [stdout]     |
[INFO] [stdout] 277 |         fn fromPair(tvar: u32, ty: Type) -> Substitution {
[INFO] [stdout]     |            ^^^^^^^^ help: convert the identifier to snake case: `from_pair`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `applyToSet` should have a snake case name
[INFO] [stdout]    --> src/main.rs:284:6
[INFO] [stdout]     |
[INFO] [stdout] 284 |         fn applyToSet (&self,constraints: &mut Vec<Constraint>) -> Vec<Constraint> {
[INFO] [stdout]     |            ^^^^^^^^^^ help: convert the identifier to snake case: `apply_to_set`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `applyOneType` should have a snake case name
[INFO] [stdout]    --> src/main.rs:293:6
[INFO] [stdout]     |
[INFO] [stdout] 293 |         fn applyOneType(&self, ty: Type) -> Type {
[INFO] [stdout]     |            ^^^^^^^^^^^^ help: convert the identifier to snake case: `apply_one_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/main.rs:156:35
[INFO] [stdout]     |
[INFO] [stdout] 156 |             TypedTerm::T_INT{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyInt}],
[INFO] [stdout]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `solutionType` should have a snake case name
[INFO] [stdout]    --> src/main.rs:311:8
[INFO] [stdout]     |
[INFO] [stdout] 311 |             for solutionType in self.solutions.values_mut() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `solutionOne` should have a snake case name
[INFO] [stdout]    --> src/main.rs:330:12
[INFO] [stdout]     |
[INFO] [stdout] 330 |             let mut solutionOne = unifyOne(constraints[0].clone());
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: convert the identifier to snake case: `solution_one`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `updateConstraints` should have a snake case name
[INFO] [stdout]    --> src/main.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 |             let mut updateConstraints = solutionOne.applyToSet(&mut vec1);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `update_constraints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `solutionRest` should have a snake case name
[INFO] [stdout]    --> src/main.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 |             let solutionRest = unify(updateConstraints);
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_rest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unifyOne` should have a snake case name
[INFO] [stdout]    --> src/main.rs:343:5
[INFO] [stdout]     |
[INFO] [stdout] 343 |     fn unifyOne(constraint: Constraint) -> Substitution {
[INFO] [stdout]     |        ^^^^^^^^ help: convert the identifier to snake case: `unify_one`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unifyVar` should have a snake case name
[INFO] [stdout]    --> src/main.rs:356:5
[INFO] [stdout]     |
[INFO] [stdout] 356 |     fn unifyVar(tvar: u32, ty: Type) -> Substitution {
[INFO] [stdout]     |        ^^^^^^^^ help: convert the identifier to snake case: `unify_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `typeInference` should have a snake case name
[INFO] [stdout]    --> src/main.rs:397:5
[INFO] [stdout]     |
[INFO] [stdout] 397 |     fn typeInference(term: UntypedTerm) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `type_inference`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvT` should have a snake case name
[INFO] [stdout]    --> src/main.rs:398:11
[INFO] [stdout]     |
[INFO] [stdout] 398 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |                 ^^^^ help: convert the identifier to snake case: `env_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TypedTerm` should have a snake case name
[INFO] [stdout]    --> src/main.rs:399:10
[INFO] [stdout]     |
[INFO] [stdout] 399 |         let TypedTerm = annotate(term, EnvT, &mut 0);
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `typed_term`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Constraints` should have a snake case name
[INFO] [stdout]    --> src/main.rs:400:10
[INFO] [stdout]     |
[INFO] [stdout] 400 |         let Constraints = collect(TypedTerm.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Env` should have a snake case name
[INFO] [stdout]    --> src/main.rs:415:3
[INFO] [stdout]     |
[INFO] [stdout] 415 |         Env: HashMap<char,TypedTerm>
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case: `env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Interp` should have a snake case name
[INFO] [stdout]    --> src/main.rs:433:5
[INFO] [stdout]     |
[INFO] [stdout] 433 |     fn Interp(term: TypedTerm, env: &mut InterpEnv) -> TypedTerm {
[INFO] [stdout]     |        ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `interp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvNew` should have a snake case name
[INFO] [stdout]    --> src/main.rs:443:19
[INFO] [stdout]     |
[INFO] [stdout] 443 |                 let mut EnvNew = InterpEnv{Env: HashMap::new()};
[INFO] [stdout]     |                         ^^^^^^ help: convert the identifier to snake case: `env_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]    --> src/main.rs:157:36
[INFO] [stdout]     |
[INFO] [stdout] 157 |             TypedTerm::T_BOOL{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyBool}],
[INFO] [stdout]     |                                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:165:25
[INFO] [stdout]     |
[INFO] [stdout] 165 |             TypedTerm::T_VAR{ty: t, name: n} => vec![],
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]    --> src/main.rs:165:34
[INFO] [stdout]     |
[INFO] [stdout] 165 |             TypedTerm::T_VAR{ty: t, name: n} => vec![],
[INFO] [stdout]     |                                           ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvNew` should have a snake case name
[INFO] [stdout]    --> src/main.rs:508:19
[INFO] [stdout]     |
[INFO] [stdout] 508 |                 let mut EnvNew = InterpEnv{Env: HashMap::new()};
[INFO] [stdout]     |                         ^^^^^^ help: convert the identifier to snake case: `env_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/main.rs:175:33
[INFO] [stdout]     |
[INFO] [stdout] 175 |             TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                          ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `InterpE` should have a snake case name
[INFO] [stdout]    --> src/main.rs:522:5
[INFO] [stdout]     |
[INFO] [stdout] 522 |     fn InterpE(term: UntypedTerm) {
[INFO] [stdout]     |        ^^^^^^^ help: convert the identifier to snake case: `interp_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvT` should have a snake case name
[INFO] [stdout]    --> src/main.rs:523:11
[INFO] [stdout]     |
[INFO] [stdout] 523 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |                 ^^^^ help: convert the identifier to snake case: `env_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TypedTerm` should have a snake case name
[INFO] [stdout]    --> src/main.rs:524:10
[INFO] [stdout]     |
[INFO] [stdout] 524 |         let TypedTerm = annotate(term, EnvT, &mut 0);
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `typed_term`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Constraints` should have a snake case name
[INFO] [stdout]    --> src/main.rs:525:10
[INFO] [stdout]     |
[INFO] [stdout] 525 |         let Constraints = collect(TypedTerm.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvI` should have a snake case name
[INFO] [stdout]    --> src/main.rs:528:14
[INFO] [stdout]     |
[INFO] [stdout] 528 |         let mut EnvI = InterpEnv{Env: HashMap::new()};
[INFO] [stdout]     |                 ^^^^ help: convert the identifier to snake case: `env_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Add` should have a snake case name
[INFO] [stdout]    --> src/main.rs:534:5
[INFO] [stdout]     |
[INFO] [stdout] 534 |     fn Add(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Minus` should have a snake case name
[INFO] [stdout]    --> src/main.rs:541:5
[INFO] [stdout]     |
[INFO] [stdout] 541 |     fn Minus(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^^^ help: convert the identifier to snake case: `minus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Mul` should have a snake case name
[INFO] [stdout]    --> src/main.rs:548:5
[INFO] [stdout]     |
[INFO] [stdout] 548 |     fn Mul(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `mul`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Div` should have a snake case name
[INFO] [stdout]    --> src/main.rs:555:5
[INFO] [stdout]     |
[INFO] [stdout] 555 |     fn Div(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `div`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Lt` should have a snake case name
[INFO] [stdout]    --> src/main.rs:562:5
[INFO] [stdout]     |
[INFO] [stdout] 562 |     fn Lt(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^ help: convert the identifier to snake case: `lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `And` should have a snake case name
[INFO] [stdout]    --> src/main.rs:570:5
[INFO] [stdout]     |
[INFO] [stdout] 570 |     fn And(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `and`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Or` should have a snake case name
[INFO] [stdout]    --> src/main.rs:577:5
[INFO] [stdout]     |
[INFO] [stdout] 577 |     fn Or(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^ help: convert the identifier to snake case (notice the capitalization): `or`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Equ` should have a snake case name
[INFO] [stdout]    --> src/main.rs:584:5
[INFO] [stdout]     |
[INFO] [stdout] 584 |     fn Equ(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `equ`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvT` should have a snake case name
[INFO] [stdout]    --> src/main.rs:613:10
[INFO] [stdout]     |
[INFO] [stdout] 613 |     let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |             ^^^^ help: convert the identifier to snake case: `env_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:334:8
[INFO] [stdout]     |
[INFO] [stdout] 334 |             let mut updateConstraints = solutionOne.applyToSet(&mut vec1);
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:398:7
[INFO] [stdout]     |
[INFO] [stdout] 398 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:437:31
[INFO] [stdout]     |
[INFO] [stdout] 437 |             TypedTerm::T_VAR{ty: t, name: n} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:441:31
[INFO] [stdout]     |
[INFO] [stdout] 441 |             TypedTerm::T_APP{ty: t, fun: f, arg: a} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:447:34
[INFO] [stdout]     |
[INFO] [stdout] 447 |                         TypedTerm::T_FUN{ty: t1, param: p1, body: b1} => match *p1.clone() {
[INFO] [stdout]     |                                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:448:35
[INFO] [stdout]     |
[INFO] [stdout] 448 | ...                   TypedTerm::T_VAR{ty: t2, name: n1} => {
[INFO] [stdout]     |                                            ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:459:32
[INFO] [stdout]     |
[INFO] [stdout] 459 |             TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:470:31
[INFO] [stdout]     |
[INFO] [stdout] 470 |             TypedTerm::T_NOT{ty: t, exp: e} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:477:31
[INFO] [stdout]     |
[INFO] [stdout] 477 |             TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:482:30
[INFO] [stdout]     |
[INFO] [stdout] 482 |             TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                 ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:487:31
[INFO] [stdout]     |
[INFO] [stdout] 487 |             TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:492:30
[INFO] [stdout]     |
[INFO] [stdout] 492 |             TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => {
[INFO] [stdout]     |                                 ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:497:30
[INFO] [stdout]     |
[INFO] [stdout] 497 |             TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => {
[INFO] [stdout]     |                                 ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:502:34
[INFO] [stdout]     |
[INFO] [stdout] 502 |                     TypedTerm::T_BOOL{ty: t1, value: v} => if v {v2} else {v3},
[INFO] [stdout]     |                                           ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:506:31
[INFO] [stdout]     |
[INFO] [stdout] 506 |             TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => {
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:511:33
[INFO] [stdout]     |
[INFO] [stdout] 511 |                     TypedTerm::T_VAR{ty: t, name: n} => {
[INFO] [stdout]     |                                          ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:523:7
[INFO] [stdout]     |
[INFO] [stdout] 523 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `solutions`
[INFO] [stdout]    --> src/main.rs:526:10
[INFO] [stdout]     |
[INFO] [stdout] 526 |         let solutions = unify(Constraints);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solutions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:536:26
[INFO] [stdout]     |
[INFO] [stdout] 536 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:536:63
[INFO] [stdout]     |
[INFO] [stdout] 536 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:543:26
[INFO] [stdout]     |
[INFO] [stdout] 543 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:543:63
[INFO] [stdout]     |
[INFO] [stdout] 543 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:550:26
[INFO] [stdout]     |
[INFO] [stdout] 550 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:550:63
[INFO] [stdout]     |
[INFO] [stdout] 550 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:557:26
[INFO] [stdout]     |
[INFO] [stdout] 557 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2},
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:557:63
[INFO] [stdout]     |
[INFO] [stdout] 557 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:564:26
[INFO] [stdout]     |
[INFO] [stdout] 564 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, value: v1 < ...
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:564:63
[INFO] [stdout]     |
[INFO] [stdout] 564 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, value: v1 < v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:572:27
[INFO] [stdout]     |
[INFO] [stdout] 572 | ...   (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1...
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:572:65
[INFO] [stdout]     |
[INFO] [stdout] 572 | ...e: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 && v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:579:27
[INFO] [stdout]     |
[INFO] [stdout] 579 | ...   (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1...
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:579:65
[INFO] [stdout]     |
[INFO] [stdout] 579 | ...e: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 || v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:586:27
[INFO] [stdout]     |
[INFO] [stdout] 586 | ...   (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1...
[INFO] [stdout]     |                              ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:586:65
[INFO] [stdout]     |
[INFO] [stdout] 586 | ...e: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 == v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/main.rs:587:26
[INFO] [stdout]     |
[INFO] [stdout] 587 | ...   (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 =...
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/main.rs:587:63
[INFO] [stdout]     |
[INFO] [stdout] 587 | ...ue: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value: v1 == v2},
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NOT`, `AND`, `OR`, `LT`, and `IF` are never constructed
[INFO] [stdout]   --> src/main.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout]  9 |     enum UntypedTerm {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |         NOT{exp: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 17 |         AND{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 18 |         OR{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^
[INFO] [stdout] 19 |         EQU{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout] 20 |         LT{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^
[INFO] [stdout] 21 |         IF{exp1: Box<UntypedTerm>, exp2: Box<UntypedTerm>, exp3: Box<UntypedTerm>},
[INFO] [stdout]    |         ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UntypedTerm` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `empty` and `fromPair` are never used
[INFO] [stdout]    --> src/main.rs:272:6
[INFO] [stdout]     |
[INFO] [stdout] 269 |     impl Substitution {
[INFO] [stdout]     |     ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 272 |         fn empty() -> Substitution {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |         fn fromPair(tvar: u32, ty: Type) -> Substitution {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `ParamTy` should have a snake case name
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         TyFun{ParamTy: Box<Type>, ReturnTy: Box<Type>}
[INFO] [stdout]    |               ^^^^^^^ help: convert the identifier to snake case: `param_ty`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `ReturnTy` should have a snake case name
[INFO] [stdout]   --> src/main.rs:33:29
[INFO] [stdout]    |
[INFO] [stdout] 33 |         TyFun{ParamTy: Box<Type>, ReturnTy: Box<Type>}
[INFO] [stdout]    |                                   ^^^^^^^^ help: convert the identifier to snake case: `return_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `freshVar` should have a snake case name
[INFO] [stdout]   --> src/main.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     fn freshVar(v: &mut u32) -> Type {
[INFO] [stdout]    |        ^^^^^^^^ help: convert the identifier to snake case: `fresh_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `getType` should have a snake case name
[INFO] [stdout]   --> src/main.rs:65:6
[INFO] [stdout]    |
[INFO] [stdout] 65 |         fn getType(self) -> Type {
[INFO] [stdout]    |            ^^^^^^^ help: convert the identifier to snake case: `get_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Env` should have a snake case name
[INFO] [stdout]   --> src/main.rs:88:3
[INFO] [stdout]    |
[INFO] [stdout] 88 |         Env: HashMap<char,Type>
[INFO] [stdout]    |         ^^^ help: convert the identifier to snake case: `env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `varNum` should have a snake case name
[INFO] [stdout]    --> src/main.rs:107:52
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn annotate(term: UntypedTerm, mut tenv: TypeEnv, varNum: &mut u32) -> TypedTerm {
[INFO] [stdout]     |                                                       ^^^^^^ help: convert the identifier to snake case: `var_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy` should have a snake case name
[INFO] [stdout]    --> src/main.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 let paramTy = freshVar(varNum);
[INFO] [stdout]     |                     ^^^^^^^ help: convert the identifier to snake case: `param_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy1` should have a snake case name
[INFO] [stdout]    --> src/main.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 let paramTy1 = paramTy.clone();
[INFO] [stdout]     |                     ^^^^^^^^ help: convert the identifier to snake case: `param_ty1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramBinder` should have a snake case name
[INFO] [stdout]    --> src/main.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |                 let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: p};                
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy` should have a snake case name
[INFO] [stdout]    --> src/main.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 |                 let paramTy = freshVar(varNum);
[INFO] [stdout]     |                     ^^^^^^^ help: convert the identifier to snake case: `param_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramTy1` should have a snake case name
[INFO] [stdout]    --> src/main.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let paramTy1 = paramTy.clone();
[INFO] [stdout]     |                     ^^^^^^^^ help: convert the identifier to snake case: `param_ty1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `paramBinder` should have a snake case name
[INFO] [stdout]    --> src/main.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |                 let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: e1};
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `typeA` should have a snake case name
[INFO] [stdout]    --> src/main.rs:149:3
[INFO] [stdout]     |
[INFO] [stdout] 149 |         typeA: Type,
[INFO] [stdout]     |         ^^^^^ help: convert the identifier to snake case: `type_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `typeB` should have a snake case name
[INFO] [stdout]    --> src/main.rs:150:3
[INFO] [stdout]     |
[INFO] [stdout] 150 |         typeB: Type
[INFO] [stdout]     |         ^^^^^ help: convert the identifier to snake case: `type_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fromPair` should have a snake case name
[INFO] [stdout]    --> src/main.rs:277:6
[INFO] [stdout]     |
[INFO] [stdout] 277 |         fn fromPair(tvar: u32, ty: Type) -> Substitution {
[INFO] [stdout]     |            ^^^^^^^^ help: convert the identifier to snake case: `from_pair`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `applyToSet` should have a snake case name
[INFO] [stdout]    --> src/main.rs:284:6
[INFO] [stdout]     |
[INFO] [stdout] 284 |         fn applyToSet (&self,constraints: &mut Vec<Constraint>) -> Vec<Constraint> {
[INFO] [stdout]     |            ^^^^^^^^^^ help: convert the identifier to snake case: `apply_to_set`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `applyOneType` should have a snake case name
[INFO] [stdout]    --> src/main.rs:293:6
[INFO] [stdout]     |
[INFO] [stdout] 293 |         fn applyOneType(&self, ty: Type) -> Type {
[INFO] [stdout]     |            ^^^^^^^^^^^^ help: convert the identifier to snake case: `apply_one_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `solutionType` should have a snake case name
[INFO] [stdout]    --> src/main.rs:311:8
[INFO] [stdout]     |
[INFO] [stdout] 311 |             for solutionType in self.solutions.values_mut() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `solutionOne` should have a snake case name
[INFO] [stdout]    --> src/main.rs:330:12
[INFO] [stdout]     |
[INFO] [stdout] 330 |             let mut solutionOne = unifyOne(constraints[0].clone());
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: convert the identifier to snake case: `solution_one`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `updateConstraints` should have a snake case name
[INFO] [stdout]    --> src/main.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 |             let mut updateConstraints = solutionOne.applyToSet(&mut vec1);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `update_constraints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `solutionRest` should have a snake case name
[INFO] [stdout]    --> src/main.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 |             let solutionRest = unify(updateConstraints);
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_rest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unifyOne` should have a snake case name
[INFO] [stdout]    --> src/main.rs:343:5
[INFO] [stdout]     |
[INFO] [stdout] 343 |     fn unifyOne(constraint: Constraint) -> Substitution {
[INFO] [stdout]     |        ^^^^^^^^ help: convert the identifier to snake case: `unify_one`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unifyVar` should have a snake case name
[INFO] [stdout]    --> src/main.rs:356:5
[INFO] [stdout]     |
[INFO] [stdout] 356 |     fn unifyVar(tvar: u32, ty: Type) -> Substitution {
[INFO] [stdout]     |        ^^^^^^^^ help: convert the identifier to snake case: `unify_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `typeInference` should have a snake case name
[INFO] [stdout]    --> src/main.rs:397:5
[INFO] [stdout]     |
[INFO] [stdout] 397 |     fn typeInference(term: UntypedTerm) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `type_inference`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvT` should have a snake case name
[INFO] [stdout]    --> src/main.rs:398:11
[INFO] [stdout]     |
[INFO] [stdout] 398 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |                 ^^^^ help: convert the identifier to snake case: `env_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TypedTerm` should have a snake case name
[INFO] [stdout]    --> src/main.rs:399:10
[INFO] [stdout]     |
[INFO] [stdout] 399 |         let TypedTerm = annotate(term, EnvT, &mut 0);
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `typed_term`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Constraints` should have a snake case name
[INFO] [stdout]    --> src/main.rs:400:10
[INFO] [stdout]     |
[INFO] [stdout] 400 |         let Constraints = collect(TypedTerm.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `Env` should have a snake case name
[INFO] [stdout]    --> src/main.rs:415:3
[INFO] [stdout]     |
[INFO] [stdout] 415 |         Env: HashMap<char,TypedTerm>
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case: `env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Interp` should have a snake case name
[INFO] [stdout]    --> src/main.rs:433:5
[INFO] [stdout]     |
[INFO] [stdout] 433 |     fn Interp(term: TypedTerm, env: &mut InterpEnv) -> TypedTerm {
[INFO] [stdout]     |        ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `interp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvNew` should have a snake case name
[INFO] [stdout]    --> src/main.rs:443:19
[INFO] [stdout]     |
[INFO] [stdout] 443 |                 let mut EnvNew = InterpEnv{Env: HashMap::new()};
[INFO] [stdout]     |                         ^^^^^^ help: convert the identifier to snake case: `env_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvNew` should have a snake case name
[INFO] [stdout]    --> src/main.rs:508:19
[INFO] [stdout]     |
[INFO] [stdout] 508 |                 let mut EnvNew = InterpEnv{Env: HashMap::new()};
[INFO] [stdout]     |                         ^^^^^^ help: convert the identifier to snake case: `env_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `InterpE` should have a snake case name
[INFO] [stdout]    --> src/main.rs:522:5
[INFO] [stdout]     |
[INFO] [stdout] 522 |     fn InterpE(term: UntypedTerm) {
[INFO] [stdout]     |        ^^^^^^^ help: convert the identifier to snake case: `interp_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvT` should have a snake case name
[INFO] [stdout]    --> src/main.rs:523:11
[INFO] [stdout]     |
[INFO] [stdout] 523 |         let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |                 ^^^^ help: convert the identifier to snake case: `env_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TypedTerm` should have a snake case name
[INFO] [stdout]    --> src/main.rs:524:10
[INFO] [stdout]     |
[INFO] [stdout] 524 |         let TypedTerm = annotate(term, EnvT, &mut 0);
[INFO] [stdout]     |             ^^^^^^^^^ help: convert the identifier to snake case: `typed_term`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Constraints` should have a snake case name
[INFO] [stdout]    --> src/main.rs:525:10
[INFO] [stdout]     |
[INFO] [stdout] 525 |         let Constraints = collect(TypedTerm.clone());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvI` should have a snake case name
[INFO] [stdout]    --> src/main.rs:528:14
[INFO] [stdout]     |
[INFO] [stdout] 528 |         let mut EnvI = InterpEnv{Env: HashMap::new()};
[INFO] [stdout]     |                 ^^^^ help: convert the identifier to snake case: `env_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Add` should have a snake case name
[INFO] [stdout]    --> src/main.rs:534:5
[INFO] [stdout]     |
[INFO] [stdout] 534 |     fn Add(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `add`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Minus` should have a snake case name
[INFO] [stdout]    --> src/main.rs:541:5
[INFO] [stdout]     |
[INFO] [stdout] 541 |     fn Minus(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^^^ help: convert the identifier to snake case: `minus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Mul` should have a snake case name
[INFO] [stdout]    --> src/main.rs:548:5
[INFO] [stdout]     |
[INFO] [stdout] 548 |     fn Mul(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `mul`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Div` should have a snake case name
[INFO] [stdout]    --> src/main.rs:555:5
[INFO] [stdout]     |
[INFO] [stdout] 555 |     fn Div(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `div`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Lt` should have a snake case name
[INFO] [stdout]    --> src/main.rs:562:5
[INFO] [stdout]     |
[INFO] [stdout] 562 |     fn Lt(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^ help: convert the identifier to snake case: `lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `And` should have a snake case name
[INFO] [stdout]    --> src/main.rs:570:5
[INFO] [stdout]     |
[INFO] [stdout] 570 |     fn And(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `and`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Or` should have a snake case name
[INFO] [stdout]    --> src/main.rs:577:5
[INFO] [stdout]     |
[INFO] [stdout] 577 |     fn Or(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^ help: convert the identifier to snake case (notice the capitalization): `or`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `Equ` should have a snake case name
[INFO] [stdout]    --> src/main.rs:584:5
[INFO] [stdout]     |
[INFO] [stdout] 584 |     fn Equ(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm {
[INFO] [stdout]     |        ^^^ help: convert the identifier to snake case: `equ`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `EnvT` should have a snake case name
[INFO] [stdout]    --> src/main.rs:613:10
[INFO] [stdout]     |
[INFO] [stdout] 613 |     let mut EnvT = TypeEnv{Env: HashMap::new()};
[INFO] [stdout]     |             ^^^^ help: convert the identifier to snake case: `env_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.33s
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a", kill_on_drop: false }`
[INFO] [stdout] 689d698da5cd47590094fa6f4563e8a0e05df2b9a30501eb60230513e6107d3a
